Appearance
神经网络中的激活函数、正则化与归一化
本文按照“表达能力 → 泛化能力 → 优化稳定性”的学习路径展开:
- 激活函数:引入非线性,决定网络的表达能力。
- Dropout:通过随机失活抑制过拟合,提升泛化能力。
- 归一化:控制中间激活值的尺度,改善训练稳定性。
- 综合选型:根据模型架构、批次大小和任务场景选择合适的方法。
第一部分:ReLU 及其变体——让网络真正具备非线性
如果多层网络只包含线性变换,那么它们叠加后仍然等价于一个线性变换,深度无法带来额外的表达能力。激活函数插入线性层之间,打破这种线性闭合性。ReLU(Rectified Linear Unit)因计算简单、正区间梯度稳定,成为最经典的选择。
1.1 ReLU 的定义与梯度
其导数为:
优势:正区间不饱和,梯度为 1;计算成本低;输出具有稀疏性。
缺点:当某个神经元长期落在负区间时,梯度恒为 0,参数无法更新,这就是“死亡 ReLU”(Dying ReLU)。过大的学习率、偏置初始化不当都可能加剧这个问题。
1.2 ReLU 的主要变体
Leaky ReLU
在负区间保留一个很小的斜率
其中
PReLU
PReLU 将
它比 Leaky ReLU 更灵活,但会增加参数,并可能在小数据集上带来过拟合。
ELU 与 SELU
ELU 在负区间采用平滑指数曲线:
负区间输出有界且均值更接近 0,通常比 ReLU 更平滑,但指数运算会增加计算成本。SELU 是 ELU 的特定缩放版本,配合特定初始化和网络结构时具有 self-normalizing 特性,通常与 AlphaDropout 配套使用,不能脱离这些条件单独理解。
GELU
GELU 不是简单地截断负值,而是按照输入大小对其进行平滑概率加权:
其中
SiLU / Swish
SiLU 也常被称为 Swish。它允许少量负值通过,并且处处平滑;在 MobileNetV3、EfficientNet 以及许多现代视觉和语言模型中表现良好。相比 ReLU,它通常带来更好的优化效果,但计算量略高。
1.3 激活函数的工程选型
| 场景 | 常用选择 | 原因 |
|---|---|---|
| 经典 CNN、轻量模型 | ReLU | 便宜、稳定、硬件支持好 |
| 需要缓解死亡神经元 | Leaky ReLU / PReLU | 负区间保留梯度 |
| Transformer、现代 MLP | GELU / SiLU | 平滑,优化表现通常更好 |
| SELU 专用架构 | SELU + AlphaDropout | 共同维持自归一化条件 |
| 大语言模型 FFN | SwiGLU 等门控激活 | 用门控提升表达能力,代价是结构和参数更复杂 |
激活函数没有脱离架构的“绝对王者”:CNN 中 ReLU 的效率优势仍然很重要,而 Transformer 更常使用 GELU、SiLU 或其门控变体。选择时应同时考虑梯度性质、计算成本、初始化方式、归一化位置以及已有论文或框架实现的基线。
第二部分:Dropout——随机失活的正则化方法
归一化主要控制激活值的尺度,而 Dropout 负责抑制神经元之间的过度共适应。它通过随机扰动训练过程降低过拟合,和激活函数、归一化解决的是不同问题。
2.1 Dropout 的定义与训练/推理差异
训练时,Dropout 以概率
其中
- 训练阶段:每次前向传播都随机丢弃一部分激活,迫使网络学习冗余且更稳健的特征组合。
- 推理阶段:保留全部神经元,并将 Dropout 视为恒等映射。
- 概率选择:全连接层常用
;卷积层通常使用更小的值,避免破坏空间结构;大模型中常用较小的 ,甚至设为 0。
Dropout 的本质可以理解为训练大量共享参数的“子网络”,并在推理时使用它们的近似集成。它主要用于容易过拟合的全连接层或注意力/前馈子层输出;如果模型已经很大、数据充足,或者训练中已经使用强数据增强与权重衰减,Dropout 过大反而会降低拟合能力。
2.2 Dropout 的常见变体
| 变体 | 随机失活单位 | 典型场景 | 核心特点 |
|---|---|---|---|
| Standard Dropout | 单个元素 | MLP、分类头 | 通用,粒度最细 |
| Spatial Dropout / Dropout2d | 整个通道 | CNN、特征图 | 避免只随机删除孤立像素,保留空间结构 |
| DropConnect | 权重连接 | MLP、研究场景 | 随机删除权重,而不是激活值 |
| DropPath / Stochastic Depth | 整条残差分支 | ResNet、ViT、深层网络 | 深层网络中随机跳过子层,通常随深度增加失活率 |
| AlphaDropout | 激活元素 | SELU 网络 | 尽量保持 SELU 的均值和方差不变 |
Dropout 应放在网络结构明确的位置,并注意不要误用在推理阶段。实际工程中应使用框架提供的 train() / eval() 模式切换;手动实现时,最常见的错误是忘记训练阶段的
第三部分:归一化方法——控制激活值的尺度
Batch Normalization 由 Sergey Ioffe 和 Christian Szegedy 在 2015 年提出,是第一个被大规模应用的归一化技术,极大地推动了深度卷积网络的训练效率。
3.1 Batch Normalization(BN)——批次维度的稳定器
3.1.1 严格数学定义
对于一个形状为
- 均值:
- 方差:
- 标准化:
- 输出:
3.1.2 训练与推理的分离(至关重要!)
BN 在训练和推理时的行为截然不同:
- 训练阶段:使用当前 mini-batch 内部的均值和方差进行归一化。这意味着同一批次内不同样本的归一化结果是相互耦合的。
- 推理阶段(测试阶段):由于可能只处理单个样本(
),无法计算有效统计量。因此,BN 使用训练过程中所有批次统计量的指数移动平均(Exponential Moving Average, EMA) 作为全局无偏估计,并冻结 和 。
3.1.3 优势与致命的局限性
- 优势:允许使用更大的学习率(梯度不易爆炸);对初始化权重不那么敏感;轻微的正则化效果(因为批次统计引入了微小噪声)。
- 局限性(阿喀琉斯之踵):
- 对批次大小(Batch Size)极度敏感:当
很小(如单卡训练时 )时,批次统计量的方差极大,引入严重噪声导致训练崩溃。因此,BN 不适用于大模型(Batch Size 常设为 1-2),也不适用于显存有限的场景。 - 不适用于循环神经网络(RNN):RNN 处理的是变长序列,不同时间步的统计特性不同,且无法在时间维度上准确计算全局统计量。
- 破坏序列长度一致性:在 NLP 中,句子长度不同,填充(Padding) token 的存在会污染均值和方差的计算。
- 对批次大小(Batch Size)极度敏感:当
为了克服 BN 对批次大小的依赖,Jimmy Lei Ba 等人在 2016 年提出了 Layer Normalization。它彻底抛弃了“批次”维度,转而在单个样本的特征维度上计算统计量。
3.2 Layer Normalization(LN)与 RMSNorm ——特征维度的独立卫士
3.2.1 Layer Normalization 的严格定义
对于一个输入向量
对于单个样本的某一层所有神经元:
- 均值:
- 方差:
- 标准化:
- 输出:
核心区别:BN 是逐通道的(不同通道有独立的
),而 LN 是逐样本逐层的(同一层的所有神经元共享同一套 ,但每个神经元有独立的 用于恢复表达)。
3.2.2 LN 在 Transformer 中的统治地位
LN 最成功的应用是在 Transformer 架构中。无论是编码器还是解码器,每个子层(多头注意力、前馈网络)之后都紧跟着 Pre-LayerNorm 或 Post-LayerNorm。 LN 适合 Transformer 的原因:
- 与批次大小无关:即使序列长度巨大(
),BN 依然工作良好,因为归一化只依赖序列本身的 个神经元。 - 沿特征轴统计:在 Transformer 中,不同的特征维度(embedding dimension)往往具有不同的尺度,LN 通过统计该样本所有特征的全局分布,使模型对特征幅值不敏感。
3.2.3 RMSNorm —— LN 的极致简化(效率的革命)
RMSNorm 由 Zhang 和 Sennrich 在 2019 年提出,目前在 LLaMA、Mistral 等主流开源大模型中全面替代了 LN。它的核心理念是:移除均值中心化(Centering),只保留均方根(Root Mean Square)缩放。
LN 的标准化步骤为
- RMS 计算:
- 标准化:
- 输出:
(通常省略 偏置项,因为中心化已被移除)
优势:计算量比 LN 减少约 10%~30%(省去了均值计算和减法),且在 LLaMA 等超大规模模型上表现与 LN 持平或略优。这是工业界为追求极致推理速度所作的简约选择。
当研究人员试图在 Mask R-CNN 等目标检测模型上使用更大的 batch size 时,BN 失效了(检测任务输入图像大,batch size 通常为 1 或 2)。Group Normalization 由 Yuxin Wu 和 Kaiming He(何恺明)在 2018 年提出,旨在填补 BN 在小批量场景下的失效空白。
3.3 Group Normalization(GN)——通道分组的折中艺术
3.3.1 严格定义与计算维度
GN 将通道(Channel)维度
对于一个形状为
- 均值:
- 方差:
- 标准化与仿射:与 BN 形式一致。
3.3.2 三个归一化的统一视角(超参数 的妙用)
GN 实际上是 LN 和 BN 的广义插值:
- 当
时,GN 退化(只有一个分组,所有通道视为一体)为 Layer Normalization。 - 当
(每组只含 1 个通道)时,GN 等价于 Instance Normalization(IN)(常用于风格迁移,逐样本逐通道归一化)。 - GN 既不要求固定的批次大小,又能保留 CNN 中通道之间的特定相关性(因为相邻通道组合在一起统计),因此在大批量受限的检测、分割任务中表现稳健,几乎完美替代 BN。
第四部分:宏观对比与选型法则
| 维度 | BatchNorm (BN) | LayerNorm (LN) | RMSNorm | GroupNorm (GN) |
|---|---|---|---|---|
| 统计维度 | 批次 | 特征 | 特征 | 通道组 |
| 是否依赖 Batch Size | 高度依赖(Batch大则好) | 完全不依赖 | 完全不依赖 | 完全不依赖 |
| 训练/推理差异 | 统计量不同(需要 EMA) | 完全相同 | 完全相同 | 完全相同 |
| 适用场景 | 标准 CNN(如 ResNet),固定大 BS | Transformer、RNN、NLP 场景 | 大语言模型(LLaMA系列) | 目标检测/分割(小 BS)、视频理解 |
| 主要优势 | 收敛快,允许大学习率 | 模型鲁棒,无批约束 | 计算极简,效率最高 | 兼具 BN 和 LN 优点,通用性强 |
选型决策树(Engineering Rule of Thumb)
- 正在训练百亿级大语言模型(LLM)? 直接使用 RMSNorm(如 LLaMA 生态)—— 省内存,提速明显,效果无损。
- 在 NLP(BERT、GPT)或序列任务(语音、时间序列)上做研究? 选 LayerNorm(经典稳健,大量基线参考)。
- 在 ImageNet 上跑 ResNet,且显卡够好(Batch Size ≥ 32)? 必须选 BatchNorm(这是 CNN 的黄金搭档)。
- 在做目标检测(Faster R-CNN / Mask R-CNN)或姿态估计,Batch Size 只能设为 1 或 2? 立刻抛弃 BN,投入 GroupNorm(何恺明在论文中证明 GN 在此类场景下完全碾压 BN)。
- 做医学图像 3D 分割或视频动作识别(时空维度极大)? 首选 GroupNorm(通常 G=8 或 16 为最佳默认值)。
结语:归一化的核心在于“定位上下文”
BatchNorm 之所以伟大,是因为它引入了批次间的协作;但它的脆弱性,也让研究界深刻认识到“数据批次”并非可靠的上下文信号。LayerNorm、GroupNorm 和 RMSNorm 的涌现,标志着归一化从**“依赖群体统计的约束”转向了“依赖个体内禀结构的自适应”**。
在现代大模型(Transformer-based)的语境下,RMSNorm 凭借其极致的简洁性成为了最终的王者——没有均值计算的额外开销,没有减法操作带来的数值问题,仅仅用 x / sqrt(mean(x^2)) 就驯服了千亿参数的梯度震荡。这再次印证了深度学习工程的一条黄金法则:少即是多,简约并不等于简单,而是对本质最深刻的提炼。 理解它们的数学本质,就是在理解如何为不同的算法架构匹配合适的“大地坐标系统”。